/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vistas;

/**
 *
 * @author curso
 */
import beans.Categoria;
import beans.Producto;
import daos.classes.CategoriaDAOImp;
import daos.interfaces.CategoriaDAO;
import daos.interfaces.ProductoDAO;
import java.sql.SQLException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class Ventana extends JFrame{
  private Map<String, JButton> botones;
  private CategoriaDAO dao;
  private ProductoDAO dao2;
  private Ventanita vent;
  private JPanel panel;
  private JList lista;
  private DefaultListModel listModel;
  {
      dao = new CategoriaDAOImp(); 
      try{
          dao.conectar();
      }catch (Exception e){
          JOptionPane.showMessageDialog(null, e.getMessage());
      }
      
              }

  
   
    public Ventana(){
        super("Productos");
      
        setSize(300,200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       // setLayout(new GridLayout(5, 1, 5, 5));
     setLayout(new BorderLayout());
panel = new JPanel();
lista = new JList();
panel.setLayout(new GridLayout(6, 1, 5, 5));
        botones = new TreeMap<String, JButton>();
        botones.put("alta", new JButton("Alta"));
        botones.put("baja", new JButton("Baja"));
        botones.put("verTodos", new JButton("Ver todos"));
        botones.put("actualiza", new JButton("Actualizar"));
        botones.put("verProductos", new JButton("ver productos"));
        botones.put("salir", new JButton("Salir"));
  
        for (String temp : botones.keySet()) {
            panel.add(botones.get(temp));
            
        }
        
        botones.get("salir").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
              JOptionPane.showMessageDialog(rootPane, "Gracias por usar el sistema");
              try{
                  dao.desconectar();
              }catch(Exception ex){
                  JOptionPane.showMessageDialog(null, "Adios :)");
              }
              System.exit(0);
            }
        });
        
        botones.get("alta").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               String nombre = JOptionPane.showInputDialog("Nombre de la categoria");
               Categoria c = new Categoria(nombre);
             try{
                 dao.insertar(c);
                 JOptionPane.showMessageDialog(null, "Se incerto correctamente");
             }catch(Exception ex){
                 JOptionPane.showMessageDialog(null, ex.getMessage());
                 
             }
            }
        });
        
        botones.get("baja").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
             
                
                 try{
    
                     Categoria cat=(Categoria)lista.getSelectedValue();
                     int id_categoria=0;
                     if(cat!=null){
                         id_categoria= cat.getId_categoria();
                     dao.borrar(id_categoria);
                     
                     JOptionPane.showMessageDialog(null, "La categoria se borro correctamente");
                     }
                 }catch(Exception ex){
                     JOptionPane.showMessageDialog(null, ex.getMessage());
                 }
             
            }
        });
        
      botones.get("verTodos").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               try{
                   
              listModel.clear();
              java.util.List<Categoria> cat = dao.verCategorias();
              
                   for (Categoria c : cat) {
                       listModel.addElement(c);
                   }
                   lista.setModel(listModel);
               }catch(Exception ex){
                   
               }
                
            }
        });
        
     botones.get("verProductos").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               
               try{
                   Categoria cat=(Categoria)lista.getSelectedValue();
             
                   String nombre = " ";
                  nombre=cat.getNombre();
                   java.util.List<Producto> listaDeProductos;
                   if(cat!=null){
                    
                       listaDeProductos = dao.verCategoria(nombre);
                      
                       if(listaDeProductos != null && !listaDeProductos.isEmpty())
                    {
                         JOptionPane.showMessageDialog(null, "Esto es mi lista "+listaDeProductos);
                        new Ventanita(listaDeProductos);
                    }else
                    {
                        JOptionPane.showMessageDialog(null, "No hay ningun producto en la categoria "+cat.getNombre());
                    }     

                   }
//                       
               }catch(Exception ex){
                   
               }
            }
        });
     lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     listModel = new DefaultListModel();
     add(BorderLayout.EAST,panel);
     add(BorderLayout.NORTH,new JLabel("Mi aplicación"));
     add(BorderLayout.CENTER,new JScrollPane(lista));
        setVisible(true);
    }
    
   
    public static void main(String[] args) {
        new Ventana();
    }
}
